package com.cpkso.buss.backend.trade.dao;

import java.util.Date;
import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;

import com.cpkso.buss.backend.trade.domain.TbSellerOrder;
import com.cpkso.buss.backend.trade.vo.NoTipListItem;

/**
 * 主要保存和查询订单
 * 按时间 用户id查询
 * @author wrzhxy@qq.com
 * @date 2018年4月7日
 */
public interface TbSellerOrderDao extends PagingAndSortingRepository<TbSellerOrder, Long> {
	/**
	 * 按用户id 和时间查询订单
	 * @param userId
	 * @param beginTime
	 * @param endTime
	 * @return
	 */
	List<TbSellerOrder> findByUserIdAndOrderTimeBetween(Long userId, Date beginTime, Date endTime);
	/**
	 * 按订单编号查找订单
	 * @param tbSellerOrder
	 * @return
	 */
	TbSellerOrder findOneByOrderId(String orderId);
	/**
	 * 找到本次发送的订单时间段内所有订单id不在参数数组里的订单
	 * 本次没有而以前有的说明是失败订单
	 * 删除失败订单
	 * @param orderStartTime
	 * @param orderEndTime
	 * @param orderIds
	 * @return
	 */
	List<TbSellerOrder> findByOrderTimeBetweenAndOrderIdNotIn(Date orderStartTime, Date orderEndTime, String[] orderIds);
	/**
	 * 
	 */
	@Query(value = "select new com.cpkso.buss.backend.trade.vo.NoTipListItem(user.name, items, orderId) from TbSellerOrder where buyerId not like '%1%'",
			countQuery = "select count(*) from TbSellerOrder")
	Page<NoTipListItem> noTipList(Pageable pageable);
	
}
